package com.qidian.buy.mq;

import com.qidian.buy.pojo.DemoUser;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

/**
 * @author 戴着假发的程序员
 * @company 起点编程
 * @date 2023/9/15 9:34
 */
@Component // 将消息接受者的配置类交个spring
public class MessageReceive {

    @RabbitListener(queues = {"queue-pojo"})
    public void receivePojo(DemoUser user){
        System.out.println("接收端收到消息:");
        System.out.println(user.getId());
        System.out.println(user.getName());
    }
    // 配置消息监听器
    // queues配置要接收的队列的名字，可以配置多个
    @RabbitListener(queues = {"simple-queue"})
    // 这里的参数就是要接收的消息的内容，要注意参数的类型必须和你发送的消息的类型匹配。
    public void receiveSimpleQueue1(String msg){
        System.out.println("消费端【1】接收到消息：" + msg);
        try {
            TimeUnit.MILLISECONDS.sleep(10);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }

    @RabbitListener(queues = {"simple-queue"})
    // 这里的参数就是要接收的消息的内容，要注意参数的类型必须和你发送的消息的类型匹配。
    public void receiveSimpleQueue2(String msg){
        System.out.println("消费端【2】接收到消息：" + msg);
        try {
            TimeUnit.MILLISECONDS.sleep(10);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }

    @RabbitListener(queues = {"simple-queue"})
    // 这里的参数就是要接收的消息的内容，要注意参数的类型必须和你发送的消息的类型匹配。
    public void receiveSimpleQueue3(String msg){
        System.out.println("消费端【3】接收到消息：" + msg);
        try {
            TimeUnit.MILLISECONDS.sleep(10);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}
